#ifndef __Timerfd_H__
#define __Timerfd_H__
#include <functional>

using TimerCallback=std::function<void()>;

class Timerfd
{
public:
    Timerfd(TimerCallback && cb, int init, int interval);
    ~Timerfd();
    //开启定时器
    void start();
    //停止定时器
    void stop();
private:
    void handleRead();

    int createTimerfd();
    int createEpollFd();
    void addEpollReadFd();
    void setTime(int init, int interval);

private:
    bool _isLooping;
    int _timerfd;
    int _epfd;
    int _init;//第一次超时时间
    int _interval;//周期性超时时间
    TimerCallback _cb;
};


#endif

